home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / jaz_clib.arc / JZGETFCB.C < prev    next >
Text File  |  1989-04-09  |  1KB  |  54 lines

  1. jzgetfcb( ffcb , fname , fdosdrive)
  2. TFCB *ffcb;
  3. char *fname;
  4. int fdosdrive;
  5. {
  6.   char wdta[44];            /* dta buffer         */
  7.   TFCB wfcb;                /* dummy fcb for function call */
  8.   int wdtaseg,wdtaofs;            /* hold orig dta address */
  9.   char *strchr(),*w;
  10.   char wname[9],wext[4];        /* place holders    */
  11.   TREG wreg;
  12.  
  13.   jzgetdta(&wdtaofs,&wdtaseg);        /* get old dta */
  14.  
  15.   jzsetdta(wdta);            /* set new dta address */
  16.  
  17.   memset(ffcb,' ',sizeof(TFCB));        /* fill with spaces */
  18.  
  19.   ffcb->flag = 0xFF;
  20.   ffcb->attr = 7;
  21.   ffcb->drive= fdosdrive;
  22.  
  23.   w = strchr(fname,'.');
  24.  
  25.   if (w) {
  26.     strncpy(wname,fname,w - fname);
  27.     wname[w-fname] = 0;             /* terminate string */
  28.     strcpy(wext,fname + (w - fname) + 1);
  29.   }
  30.   else {
  31.     strcpy(wname,fname);
  32.     wext[0] = 0;
  33.   }
  34.  
  35.   memcpy(ffcb->name,wname,strlen(wname));
  36.   memcpy(ffcb->ext ,wext ,strlen(wext ));
  37.  
  38.   wreg.h.ah = 0x11;        /* get first file function */
  39.   wreg.x.ds = getds();
  40.   wreg.x.dx = (int) ffcb;    /* get seg:off pointer to fcb */
  41.   msdos(&wreg);
  42.  
  43.   if (wreg.h.al == 0xff)
  44.     return(-1);
  45.  
  46.   memcpy(ffcb,wdta,sizeof(TFCB));    /* get info into return var */
  47.  
  48.   jzsetdta(wdtaofs);            /* restore orig dta */
  49.  
  50.   return(0);
  51.  
  52. }
  53.  
  54.